package com.jdbcdatabase;

import com.jdbctest.numbertwo.JDBCUtils;

import java.sql.Connection;
import java.sql.Statement;

/**
 *  具有数据库管理员权限，以在给定模式中创建数据库。
 *  要执行以下示例，需要用实际用户名和密码替换这里用户名(username)和密码(password)。MySQL或数据库已启动并运行。
 *  原文出自【易百教程】，商业转载请联系作者获得授权，非商业请保留原文链接：https://www.yiibai.com/jdbc/jdbc-create-database.html
 */
//DDL
public class DatabaseUtils {


    /**
     * 创建数据库
     * @param databaseName 数据库名称
     */
    public static void createDataBase(String databaseName) {
        Connection connection = null;
        Statement statement = null;
        try {
            //使用封装的工具类创建连接
            connection = JDBCUtils.getConnectionForDatabase();
            //获取Statement对象
            statement = connection.createStatement();

            System.out.println("数据库创建中....");
            String sql = "CREATE DATABASE " + databaseName + " DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ";

            statement.executeUpdate(sql);

            System.out.println("数据库创建成功....");


        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        } finally {
            JDBCUtils.closeResource(connection, statement);
        }
    }


    /**
     * 删除指定的数据库
     * @param databaseName 数据库名称
     */
    public static void dropDatabse(String databaseName) {
        Connection connectionForDatabase = null;
        Statement statement = null;
        try {
            connectionForDatabase = JDBCUtils.getConnectionForDatabase();

            System.out.println("数据库删除中....");

            String sql = "DROP DATABASE " + databaseName;

            statement = connectionForDatabase.createStatement();

            statement.executeUpdate(sql);

            System.out.println("数据库删除成功....");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.closeResource(connectionForDatabase, statement);
        }
    }


}
